package com.shujia.day18;

/*
    进程：是系统进行资源分配和调用的独立单位，每一个进程都有它自己的内存空间和系统资源。
        举例：IDEA, 阿里云盘, wegame, steam
    线程：是进程中的单个顺序控制流，是一条执行路径
        一个进程如果只有一条执行路径，则称为单线程程序。
        一个进程如果有多条执行路径，则称为多线程程序。

    思考：
        java程序启动时，是单线程程序还是多线程程序？多线程程序的【主线程，垃圾回收线程】


    java提供了一个类用来描述线程：Thread
        线程是程序中执行的线程。
        Java虚拟机允许应用程序同时执行多个执行线程。
        每个线程都有优先权, 具有较高优先级的线程优先于优先级较低的线程执行。



 */
class MyThread extends Thread{

    public MyThread(String name) {
        super(name);
    }

    @Override
    public void run() {
        //run方法是将来线程对象启动时要执行的计算逻辑
        for(int i=1;i<=200;i++){
            System.out.println(getName()+" - "+i);
        }
    }
}

public class ThreadDemo1 {
    public static void main(String[] args) {
        //创建一个线程对象
//        MyThread t1 = new MyThread();
//        MyThread t2 = new MyThread();
        MyThread t1 = new MyThread("李刚");
        MyThread t2 = new MyThread("钱志强");
        //给线程起名字
        // 方式1：调用setName()方法起名字
//        t1.setName("李刚");
//        t2.setName("钱志强");
        // 方式2：使用构造方法起名字

//        t1.run();
//        t2.run();
        t1.start(); // 系统分配资源给线程t1，启动线程，t1线程具备了执行的资格，具体等到抢到cpu执行权的时候才会执行
        t2.start();
    }
}
